//
//  HBWelcomeViewController.swift
//  sinaWeibo
//
//  Created by Beans on 16/6/26.
//  Copyright © 2016年 iceWorks. All rights reserved.
//

import UIKit

/* 
1. UI
2. 功能 -- 动画, 头像随着跳动
*/

class HBWelcomeViewController: UIViewController {

    override func loadView() {
        view = self.bgImageView     // 此处不需调用super
    }

    // 两个问题:
    // 1> 视图控制器的生命周期
    // 2> 约束动画的调用 --> layoutIfNeeded
    override func viewDidLoad() {
        super.viewDidLoad()

        setupUI()
//        startAnimation()
    }

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
//        startAnimation()
    }

    // 视图出现之后, 再开启动画
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)

        startAnimation()
    }

    // MARK: - 添加控件, 设置约束
    private func setupUI() {
        view.addSubview(photoImageView)
        view.addSubview(messageLabel)

        // 设置约束
        // 先水平和垂直, 再看左上右下, 最后宽高; 不多于4个
        photoImageView.snp_makeConstraints { (make) -> Void in
            make.centerX.equalTo(view.snp_centerX)
            make.top.equalTo(view.snp_bottom).offset(-250)
        }
        messageLabel.snp_makeConstraints { (make) -> Void in
            make.centerX.equalTo(view.snp_centerX)
            make.top.equalTo(photoImageView.snp_bottom).offset(10)
        }
    }

    // MARK: - 头像动画方法
    private func startAnimation() {
        // usingSpringWithDamping 弹簧效果, 0~1.0, 系数越小, 越接近弹簧效果
        // initialSpringVelocity 弹簧初始速度
        UIView.animateWithDuration(2.0, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 10, options: [], animations: { () -> Void in
            // 动画代码
            // updateConstraints 用于更新约束, 要确保约束的唯一
            self.photoImageView.snp_updateConstraints(closure: { (make) -> Void in
                // 注意: 此处修改, 要与创建时的保持一致 (top, 相对于谁)
                make.top.equalTo(self.view.snp_bottom).offset(-UIScreen.mainScreen().bounds.height + 100)
            })

            // 动画的调用
            // 以前的是frame动画, 此处为约束动画
            self.view.layoutIfNeeded()  // 修改frame一瞬间, 肉眼不可见, 故需要单独调用

            }) { (_) -> Void in
                // 动画完成
                // MARK: - 视图切换控制 (多对一, 通知)
                // 2. 发送通知
                // object, 需要传递self, 为区分是谁发送的通知
                NSNotificationCenter.defaultCenter().postNotificationName(kNotificationChangeRootVc, object: self)
        }
    }

    // MARK: - 懒加载控件
///  背景图片
    private lazy var bgImageView: UIImageView = UIImageView(image: UIImage(named: "ad_background"))

///  头像
    private lazy var photoImageView: UIImageView = {
        let img = UIImageView(image: UIImage(named: "avatar_default_big"))
        img.layer.cornerRadius = 170 / 4.0  // 170 * 170, 2x, 圆角是宽高的一半
        img.layer.masksToBounds = true
//        img.clipsToBounds = true  // 都可以
        img.layer.borderWidth = 1.0
        img.layer.borderColor = UIColor.yellowColor().CGColor
        img.sizeToFit()
        return img
    }()

///  提示语
    private lazy var messageLabel: UILabel = {
        let label = UILabel()
        label.text = "欢迎归来"
        label.font = UIFont.systemFontOfSize(15.0)
        label.textAlignment = NSTextAlignment.Center
        label.textColor = UIColor.darkGrayColor()
        return label
    }()
}
